using System.Collections.Generic;
using System.Threading.Tasks;
using MES_workbench.Api.DTO;
using MES_workbench.Domian.Entities;
using MES_workbench.ErrorCode;

namespace MES_workbench.Api.Implementationlayer.IServices
{
    /// <summary>
    /// 工作台实现接口
    /// </summary>
    public interface IWorkbenchServices
    {
        /// <summary>
        /// 按时间范围查询数据统计（最近7天/最近1个月/最近1年）
        /// </summary>
        /// <param name="dto">时间范围查询参数</param>
        /// <returns>查询结果</returns>
        Task<ApiResult<List<DataStatistics>>> GetDataStatisticsAsync(DataStatisticsQueryDto dto);


        /// <summary>
        /// 直接获取公告全量数据，按最新接收时间倒序（无需查询参数）
        /// </summary>
        /// <param name="onlyNotDeleted">是否仅返回未删除数据，默认 true</param>
        /// <returns>公告列表</returns>
        Task<ApiResult<List<Notice>>> GetLatestNoticesAsync(bool onlyNotDeleted = true);

        /// <summary>
        /// 获取订单交付提醒全量数据，按最新交付时间倒序（无需查询条件）。
        /// </summary>
        /// <returns>订单交付提醒列表</returns>
        Task<ApiResult<List<OrderDeliveryReminder>>> GetLatestOrderDeliveryRemindersAsync();

        /// <summary>
        /// 获取工单提醒全量数据（无查询条件），按计划开始时间倒序。
        /// </summary>
        /// <returns>工单提醒列表</returns>
        Task<ApiResult<List<WorkOrderReminder>>> GetLatestWorkOrderRemindersAsync();

        /// <summary>
        /// 获取工序提醒全量数据（无查询条件），按主键ID倒序。
        /// </summary>
        /// <returns>工序提醒列表</returns>
        Task<ApiResult<List<ProcessStepReminder>>> GetLatestProcessStepRemindersAsync();

        /// <summary>
        /// 获取“快过期”物品数据：还剩1~2天到期的记录，按到期日倒序。
        /// 窗口：[今天+1天 00:00, 今天+3天 00:00)。
        /// </summary>
        /// <returns>快过期（1~2天后到期）物品列表</returns>
        Task<ApiResult<List<ItemsApproachingExpiry>>> GetItemsNotExpiredAsync();

        /// <summary>
        /// 获取即将到期物品中“已过期”的数据（ExpiryDate < 当前时间），按到期日倒序。
        /// </summary>
        /// <returns>已过期物品列表</returns>
        Task<ApiResult<List<ItemsApproachingExpiry>>> GetItemsExpiredAsync();
    }
}
